In previous times, information was communicated from point A to point B via a messenger who would travel from place to place, typically carrying a written document. As times progressed, new communication methods were invented and other forms of communications came into existence. Instead of being forced to utilize written documents, the information could now be digitized into 1's and 0's and electrically sent over wires. Subsequently, wireless communications added another dimension to transmitting data, eliminating electrical wiring as a necessity. This form of communications advanced to a level that now information can be beamed up to satellites that orbit the earth and transmitted down nearly half way around the globe in less than a second. Thus, not only has data transmission become easier, but it has also become substantially faster. Larger quantities of data are now being sent than ever before. This is largely due to the fact that more people have easier access to conveniently transmit data, leading to increased occurrences of data congestion. Data congestion generally occurs when more data is trying to be transmitted than the medium for the transmission is capable of transmitting. This causes a backlog of data waiting to be sent. This is especially prevalent in modem computing networks.
These computer networks are comprised of nodes that route data packets through links between a data source, or sender (e.g., a server computer) and a data destination, or receiver (e.g., a client). Successful routing of data packets requires that a logical path (e.g., a sequence of one or more links) exists in the network between the source and destination. In general, a network possesses physical redundancy (e.g., multiple paths to a destination) in case of node and/or link failure. However, conventionally, data packets from a given source to a given destination follow a unique path through the network determined by routing tables maintained at each of the intermediate network nodes.
Frequently, a particular route will become congested with traffic, drastically increasing data latency. A source can adjust for this congestion by varying the rate that it sends data over the congested route. This tends to alleviate some of the congestion but at the price of decreasing data throughput (since data packets are sent at a slower rate). Thus, conventionally, throughput is reduced if data is forced to travel through a congested route.
The situation is analogous to using a fleet of trucks to carry a continuous supply of goods from a warehouse to an outlet along a route through downtown. Assuming the fleet of trucks is finite, each truck must return to the warehouse to get re-filled. Thus, when downtown traffic congests the route, it takes longer for each truck to get through, thereby reducing the rate of delivery of goods. On the other hand, if it were possible for the trucks to route around downtown during periods of congestion, then the delivery rate would be less impacted.